#include <stdio.h>
#include <stdlib.h>
#include "heap.h"

//打印一个整数，函数的地址用来传参
void print_int(int x)
{
    printf("%d,",x);
}

//这是一个测试案例
int main()
{
    int count;
    int temp;
    int *arr;
    Heap p;

    //输入要排序的数据大小并初始化堆
    puts("please input count of numbers:");
    fflush(stdin);
    scanf("%d",&count);

    //大根小根堆只取决于初始化
    arr = (int *)malloc(count * sizeof(int));
    heap_min_init(&p,count,arr);
    //heap_max_init(&p,count,arr);

    //逐个初始化数据
    for(int i = 0;i < count;i++)
    {
        printf("please input %d number:",i+1);
        fflush(stdin);
        scanf("%d",&temp);
        heap_insert(&p,temp);
    }

    //遍历元素
    puts("heap data is:");
    heap_trav(&p,print_int);

    //元素按最大出堆(排序为从大到小)
    puts("\nafter sort:");
    for(int i = 0;i < count;i++)
    {
        printf("%d,",heap_pop(&p));
    }    


    return 0;
}